{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# PubTabNet Dataset\n",
    "\n",
    "PubTabNet is a large dataset for image-based table recognition, containing 568k+ images of tabular data annotated with the corresponding HTML representation of the tables.\n",
    " \n",
    "The dataset is open sourced by IBM Research Australia and is [available to download freely](https://developer.ibm.com/exchanges/data/all/pubtabnet/) on the IBM Developer [Data Asset Exchange](http://ibm.biz/data-exchange). \n",
    "\n",
    "This notebook can be found on [GitHub](https://github.com/ibm-aur-nlp/PubTabNet) and [Watson Studio](https://dataplatform.cloud.ibm.com/analytics/notebooks/v2/0aa641b0-af25-4470-b9e1-6b33d6b5b66a/view?access_token=b7d5880bb60c253457a72e3ec76f9ab40ccc42c607331acdcbbbe21be4c46bc8)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing prerequisites\n",
    "import sys\n",
    "import requests\n",
    "import tarfile\n",
    "import jsonlines\n",
    "import numpy as np\n",
    "from os import path\n",
    "from PIL import Image\n",
    "from PIL import ImageFont, ImageDraw\n",
    "from glob import glob\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Download and Extract the Dataset\n",
    "\n",
    "Since the dataset is large (~12GB), here we will be downloading a small subset of the data and extract it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "376695"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fname = 'examples.tar.gz'\n",
    "url = 'https://dax-cdn.cdn.appdomain.cloud/dax-pubtabnet/2.0.0/' + fname\n",
    "r = requests.get(url)\n",
    "open(fname , 'wb').write(r.content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Extracting the dataset\n",
    "tar = tarfile.open(fname)\n",
    "tar.extractall()\n",
    "tar.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Verifying the file was extracted properly\n",
    "data_path = \"examples/\"\n",
    "path.exists(data_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing the Data\n",
    "\n",
    "In this section, we visualize the raw image and extract it's HTML annotation from the JSON file. \n",
    "We further render the table using Jupyter notebook's inbuilt HTML capabilities. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Helper function to read in tables from the annotations\n",
    "from bs4 import BeautifulSoup as bs\n",
    "from html import escape\n",
    "\n",
    "def format_html(img):\n",
    "    ''' Formats HTML code from tokenized annotation of img\n",
    "    '''\n",
    "    html_code = img['html']['structure']['tokens'].copy()\n",
    "    to_insert = [i for i, tag in enumerate(html_code) if tag in ('<td>', '>')]\n",
    "    for i, cell in zip(to_insert[::-1], img['html']['cells'][::-1]):\n",
    "        if cell['tokens']:\n",
    "            cell = [escape(token) if len(token) == 1 else token for token in cell['tokens']]\n",
    "            cell = ''.join(cell)\n",
    "            html_code.insert(i + 1, cell)\n",
    "    html_code = ''.join(html_code)\n",
    "    html_code = '''<html>\n",
    "                   <head>\n",
    "                   <meta charset=\"UTF-8\">\n",
    "                   <style>\n",
    "                   table, th, td {\n",
    "                     border: 1px solid black;\n",
    "                     font-size: 10px;\n",
    "                   }\n",
    "                   </style>\n",
    "                   </head>\n",
    "                   <body>\n",
    "                   <table frame=\"hsides\" rules=\"groups\" width=\"100%%\">\n",
    "                     %s\n",
    "                   </table>\n",
    "                   </body>\n",
    "                   </html>''' % html_code\n",
    "\n",
    "    # prettify the html\n",
    "    soup = bs(html_code)\n",
    "    html_code = soup.prettify()\n",
    "    return html_code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# Loading an example annotation\n",
    "with jsonlines.open('examples/PubTabNet_Examples.jsonl', 'r') as reader:\n",
    "    img = list(reader)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAGLCAIAAACdm6YcAABez0lEQVR4nO3daVRUZ7ro8aeKKmpgKpG5ikEQRVRUDAoKzuCMUSCJJnY3NzHJze2zzlp9+/Q6/Sm3v9zc9Lm5vdKrPdEYtDGKM5OFCo0giqAIaBEVKAGZZ6ooaqCoad8Pb3qfnUIZDEM2PL8PWTXsvXlrV/Gy2Wb/4VAUBQghhNiABwArlofP9jAQQgiN5emz5wDAwaNshBBiC+5sDwAhhNBEcQGgrq6Ovs+8Tevo6GDeLSwspG+XlJSYzeZpGx6ajwwGQ3t7O7n94sWLya7O/Hy+jt1Her4xGo3l5eXDw8MAUFdXV1VV1dXVRT/74sULrVYLACqVymKxMFdUKpXZ2dnZ2dnM9wj9TGN/Yuvr62tra+m7XADQ6XTV1dUA0Nvbq1QqR68zMDDAvNvS0kLfbm9vt9lsP3PECDGp1epnz56R22VlZZNdnfn5HO3+/fsw6iM936SnpwcHB6elpQHAnTt3JBKJUCgkT/X19bW0tBQVFQFAWVkZj8ej1youLlar1W+//XZiYiLzPUI/0xif2O7u7qysrOzs7JcvX5JHeADw1ltvnTp1KjIysqCg4J133ikoKOjr6wsPD/f09Lxw4cLOnTuVSmVoaGh+fn5nZ+fRo0e1Wm1mZqZer1+6dCnZSllZWVdXl0qlSk1NZb7HCL0Zq9VqtVoBwGazDQ8P05+9kpISi8Xy7Nmzo0ePVldXDwwMfPjhh19++eWqVavc3Nza29v1er3JZKK3Q54KDw8nC+/cufPy5cs2m62npyciIiIzM9Nms/X29h47dozP58/ey51RfX19UqnU29vb399fpVJpNJoFCxYsWLCAPNvc3BwaGlpRUfH06dOQkJCRkRGBQECeevHixccffwwAXC6eUJ2Qv/zlL8HBwe3t7f/jf/wPAPjhhx/4fH5YWFhmZubu3bvpTzVZ+OrVq8nJyaWlpaGhoWVlZRwOx2QyvfPOO0uWLDEYDIsWLSKL/WTXWywWR0fHjRs3hoaG3r17FwB8fX0jIiI0Go1IJNqwYYOnp2d5ebnFYjl06NDRo0cfP35MVszPz5dIJHw+v7S0dOb2B5q7Kisrb926devWrYGBAeZnb9++fRwO5ze/+U1AQEBERERDQ8PIyAhFUbt27aqtrU1JSTl69CiZ6wnyFL2wp6dnZGRkXFycRqNRqVQcDic5Ofmdd96Ry+Wz+GJnmIeHR21t7e3bt0tLS8Vi8ZEjR4qKisj3OwCsWrWqqKjIwcHh5cuXZWVl2dnZ9IocDmd2RsxOWq3WZrMdOHDAxcWF/F8eK1eufPDggc1mMxqNzE81WV6j0QCAXq/v7++vqalxcXGprKw0m80HDx58//336c3+OGWvWbPmypUry5cvHxwcPHfu3Nq1a8ViMYfD8fT0JAuUlJQolcrY2Fiz2SwWi8mDjo6O5IaPj090dHRKSkpcXNyM7A00x61fv37v3r179+719PRkfvZqamoWLFgglUrT09MdHR0jIiIsFgv5lJITdBwOh3kMSJ5iLkw/NTIyQs4GiEQiuzO2cxuHw/n973//1ltvRURECIVCf3//5OTkpqYm8qyjo2Nqaqq7u/vatWv9/Pz8/f27u7vJU/ivVpOiUCgOHToEAFarlf5p5+joePv27R07djA/1eQp8rm1Wq3Dw8OrV6+Ojo7+/PPP+Xw+h8Nh/rD88cP91ltvFRYWRkVFWSwWrVYrl8t1Oh3zy5tMpu7u7lu3blmtVr1ef/78+czMTPpYXSaT5efnFxUV4c9hNOXoz57BYPjb3/6mVqsLCwvNZvOzZ88qKiroY2p3d/esrKyTJ0+KRCK7LTAXNplMCoUCAHx9fV++fHnjxo20tLS9e/fO9KuaVdXV1enp6XFxcc3NzXl5eWfOnNm0aRP97PDwsMlk8vPza2trq6ur8/LyIo8nJCQcP35cLpdnZWXN0sDZ5OnTpzU1NRkZGTExMfSD27dvv3v3rpeXF3NGJU9ZrVa5XF5eXu7t7d3d3V1SUlJZWTl6s6/4/7JHRka4XO7oU3t6vZ4cegOAzWYzm830SS4AMJlMXC4XT2Sj6cD87NG0Wq2LiwvzEYPBIBQKX3mmlbmw0Wik/7VNr9c7OTlNz6h/uQwGA/27sl6vF4lEzJ1mMpl4PB6XyyWTg91uH708eqWMjIz9+/fbfUSZRn+qmZ/S4eFhoVA4+iAYL6VBCKGpV1lZ+dZbb035ZnHKRggh1sDfbhBCiDUwC4UQQixAslBc+hZCCKFfODyXjRBCrPFf57KVSiVpwUxERUXFBJckxZMxKjyPHj2a4KYQQohFVCpVVVUVua3T6aqqqqqqqkh6z2az0dcoAcCzZ8+MRuNEtvlfU/adO3du3rw5kXUePnzo4eExwUGT4skYFZ7h4eG2trYJbg0hhFhBp9NlZmaKxeIrV64AAJ/P9/DwWLhwYXFxMQAUFhbm5OQAgMViOXnyJEVR9MXkY/vxyhe9Xu/m5kYucrdarenp6a6urtXV1f/7f//vrKwsOlBCFlYqlevXr09PT1+wYEFXV5ePj09vb+/ixYvj4uLOnTvn7Ozs5eW1cePG9PR0iURSWlr64Ycf2oWlsrKynJycenp6kpKSYmNjMzIyPvjgg+nYawghNCtu3bqVkpLi5uZ27949ABAIBIGBgXfv3t2zZw8AJCQkpKenA0Bubu7SpUs7OztXrFgxkc3+eJSdk5Pj4eExODjY0dFx48aNxMTE5ORkX19flUrFDJSQhUnMYWhoKDExMS4uzsXF5dixY0qlUi6Xu7i4LFiwoLi4+MaNG/v37z906NDq1asBwC4spVark5KSPvnkk4KCAryMCiE096jVajc3NwBgXhPe0tISGBjIXKyhoSE0NHTp0qUZGRkT2eyP29LpdJs3b16yZElRUZGjoyNdaTAYDCRQEh0dTV/CTq6hJBe8CgQCctm6UCg0GAwJCQlkas7MzHR2dgYABwcHslZJSYmDg0NsbGx1dTX9FOlk4j+BIoTmGD8/v56eHm9vb3p+q6ioiIqKslvMy8tLKpUCQEFBwUQ2ywOA7u5uf39/sprZbE5KSvruu+/8/f2fPXv2L//yL3l5eSUlJU5OTps3bybrCASCkZGR0dvav3//mTNnli5dKpVK9+3b980334SEhJA/ngAAJpNJo9G8ePFi4cKFzLXa29v9/f0nviMQQuiXLz4+/uuvvw4KCgoLC5PL5aQP/Otf/9pusZUrV2ZkZHA4nPXr109ks2P9T37nzp0jp5jtAiUGg+HmzZtJSUmvXIvu7FAUZTAYmM2dV8Z96K+CEEJzCUVRJpNJIBBYLJYxknlms5nD4UywqfeKKdtms12+fFkoFIaHhy9ZsuRnDRkhhNDUwUtpEEKINfD/1kAIIdbAKRshhFgDp2yEEGINnLIRQog1cMpGCCHWmOiUXVxcrFKpAMBqtT558gQAjEZjeXn58PDw9A0OzVt2nTOTyfTw4UNyARezjtbU1NTY2Dg7Q0RoNowzZZtMpvPnz3/++eccDsfd3b21tfX777/39PQEgPT09ODg4LS0tBkZJ5pf6M4Zcfr0aalUmpaWxqyjPXr0qK2trb6+XqFQzOJQEZpJ40zZqampPB7vT3/605YtWwCgqKjIx8enr6+vr69PKpV6e3v7+/sPDQ3NxEjRfJKQkCAUCsnt/v5+Pz8/mUwmEony8vJSUlKWLVumVqtramo2b968Z8+ehw8fzu5oEZox40zZ586dc3Jy+vzzz2/fvg0AtbW1mzdvbm5u7uvrq62tvX37dmlpKd2QQmg69PT0kF/sJBJJd3c3XUcjRUn4aSkNobltnCmbw+Hs27fvT3/6E5/PV6lUy5YtI6G+Fy9e/P73v3/rrbciIiLowh9C08Hf35/8VSO1Wh0SEtLT0wMAFEWRbK/NZsN+L5o/xjk8+c///E+1Wk1ur1y5UiKR5Obmtra2pqamVldX379/PzExcfoHieYvkkBTqVS5ublisTghIYGuo3l4eJw6dcpms+GHEM0fk26MDA8PkzMhBoOBJLMRmj50Ao3+4NF1NAAwmUw8Hg+PstH8gVkohBBiDTw8QQgh1sApGyGEWAOnbIQQYg2cshFCiDVwykYIIdbAKRshhFhj0lN2Z2dnV1cXAPT19VVUVEzDkBD6Sa4PAPR6/b179/R6PQA8f/68pqaGPP7ixYv6+vrZGSKbMcuIAKDVaktLS+lYELnWFEa9C7TKysrm5mb6bmNjY3V1NX332bNnRqMRAGpra58/fz49r2D+GmfKtks+Xb16taGhwd3dvaenp7i42NPT8/z589M5PDQfMXN95JFz586Fh4efOnXKYDBQFKVSqYqKikpKSrRabV9f371792Z3wKxDlxHJ3ba2ttDQ0BMnTgDAkydPTp8+Da96F4impqaFCxc+ePCgoaEBAPR6/eDgoIODQ2ZmpsViOXnyJEVRjo6ORUVFFotFpVLdvXt3xl/fXDbOlF1aWnr58mX6Zyb5brHZbHfv3t2zZ8+iRYvoNA9CU+XWrVt0ro88YjAYRCIRl8sVi8XLly+nKMrb27upqSkyMjI2NpZ5xIfGxSwjms1mAAgPDxeJRN7e3gCwevXqgIAAeNW7QAQHBy9atGjdunXkYNzJyWnt2rWrVq3SaDS5ublLly7t7Ozkcrlms9lqtQKAo6PjLLzIuWucxsiePXtMJlNeXp6rq2tHR0d4eHh4ePi3336blJR09uzZkJCQlpaWmRkomj/UajWd6yOP+Pj4HD9+PCwsDADKy8tra2t9fX39/f2zsrIcHBwMBsNsDpdtmGVEvV4vkUi0Wu2VK1fo2i3BfBcaGhrIWSknJ6fFixcDwL179z744AN64du3b2/btu3SpUvvv/++xWLJyMiIjY29evUqRVHMxdDPN/657ObmZpPJFBgYyOPxIiIixGKxWCyWyWTHjh1bt25daGjoDIwSzSt+fn50rg8Auru7XVxc/u3f/k2j0ZjN5piYmM8+++zOnTs7duzYsWPHkiVLIiIiZnvIbMIsI5JJ2cXF5cMPP6QoiszLBPNdcHZ2lkgkEonE2dkZAPLy8rZs2eLg4ECWrKmpEQgEgYGBXl5eUqk0MDBQr9fn5+f/7ne/+5//83/euHFjFl7k3DXOUfbFixcXL1787rvvAoCnp+fJkyeDgoL8/PwAID8/v7Gx8dNPP52JYaL5JD4+ns71yeXybdu2NTQ0yOVylUrV3d395MkTg8Gwdu3aoaEhuVwOAEeOHJntIbOJq6srXUZUKpUURb18+ZLD4ej1eicnJ3ox5rvg4+NDP37x4sX29naLxWIymerr64OCgs6cObNly5by8vKVK1dmZGRwOJz169d3dHTk5OSQYvNsvMo5a3JZKIqijEYjCarRZTWEphyd66NLfjqdjhziGQwGoVDI5XItFgtFUZhrfzPk+5f8WxSHwzEYDMz5mmBGE1+JfndoZrOZw+GQB41Go4ODA75BUwtLfgghxBp4KQ1CCLEGTtkIIcQaOGUjhBBr4JSNEEKsgVM2QgixBk7ZCCHEGv81ZVdVVWVmZhYVFY27Tmtrq1KpnM5RIYQQ69mlEG02W3d3N31Xr9eTfJNdGXFsP07Z58+fd3FxOXTo0KZNm8ZdR6vV2pViEEIIMY1OIRYWFubk5NALfPHFF42NjXZlxHHxAECj0Tg6Oi5ZsgT+GeLJysricDgmkykuLu7ChQtBQUFWqzUlJSUzM5PD4Tx9+jQhIaGlpaWsrGxkZGTr1q3379/X6XQff/zx1L9uhBBiIZJCdHNzo+PACQkJ6enp5HZ2dvbGjRsBIDg4GAAoimprayPJrbFxAaC7u9vLywsAnjx58pe//KW/v7+mpsbFxaWyspIEoQ4dOqTT6QYHBzkczsGDBxMSEgAgKyvLy8tLJpPl5OS0trbifI0QQrTRQUra8+fPPT09SayJuHfvXmxs7EQ2ywWA4ODguro6AFi9erWXl5der1+9enV0dPTnn3/O4/FI2MFms+l0OrFYDACk4CUWi6Ojo2NiYj799FPSckQIIUTYBSmZOjo6+vv7i4uL79y5A6PKiGPjAQCfz1++fPl3333n6+vb0NDw3nvv3bp1q6SkhG7jEjKZLCsry2QyKRSK7du3r1u37tq1a56enpGRkVP1IhFCaG6wC1Lu2rWLPtyOj48HAIVCwePxmGXEibSsf5KFGhkZoatdw8PDQqGQw+HYrUAH1QDAZrOZTCa7MjpCCCF4VZDy58OSH0IIsQZeSoMQQqyBUzZCCLEGTtkIIcQaOGUjhBBr4JSNEEKsgVM2QgixxjhTdkVFxStvA8DAwMDjx4+nZVBo3rNrnplMpocPH46MjMBP62hNTU2NjY2zM0SEZsM4U/b169efPn0KABaL5auvvmI+ZTQae3t7p3FoaB6za56dPn1aKpWmpaUx62iPHj1qa2urr69XKBSzOFSEZtI4U/ayZcvKysoA4B//+MfGjRttNlt1dXVmZmZubi5ZoKWl5cKFC3//+99bWlqmfbBo3khISKCvqu3v7/fz85PJZCKRKC8vLyUlZdmyZWq1uqamZvPmzXv27Hn48OHsjhahGTPOlG21WjkcjtVq7e3tDQkJGRoaioiICA0Nra6uJgswe37TP1o0H/X09JDumEQi6e7uputoNpuNLDBVlwIj9Ms3zpRNUVR8fPylS5ekUqlEIlGr1X/729+Cg4OlUilZgNnzm/7RovnI39+/o6MDANRqdUhICF1H43K5AGCz2cgNhOaD8afsoKCgR48ebdu2jUzZRqOxtLSU/gMKpOd39+5d/Ds1aDrI5XKxWKxSqXJzc8VicUJCwtmzZ69cuRIWFhYbG3vq1KlTp07t3LlztoeJ0AyZdBbKZrMZjUYSzqYfwZ4fmiZ0Am14eFgkEgGjjgYAJpOJx+PhUTaaP7DkhxBCrIGHJwghxBo4ZSOEEGvglI0QQqyBUzZCCLEGTtkIIcQaOGUjhBBrjDNly+XynJycO3fuTHyLWPhDPx8z10cbGBgAgMbGRrqXAADPnj0zGo0zOjj2Y5YRic7OTnKjo6OjqqpKqVTCqF1N02q1Wq2WvsvMLr548aK+vp7cxs7idBhnyu7p6Tlw4MCWLVsmvkUs/KGfiZnrox/Mzs6+fv26Xq8fHBx0cHDIzMy0WCwnT56kKMrR0XEWR8tGdBmR3O3q6vrzn/9stVoBoLCwUCKRODs7M3c1c12bzZaRkcFMMdPZxZKSEq1W29fXd+/ePewsTpOJ9nQsFsu5c+ecnZ29vLyGhoZsNptGo3F0dCQXQ6amphYUFPT19YWHh3t5eQFAWVlZV1eXSqVKTU3Fag+alFu3bqWkpLi5ud27d4888vTpUw8PD71e7+TktHbtWgCorq7Ozc1dunRpZ2fnihUrZnW8LMMsI5rNZj6f7+vrGxUVRZ4dHBzk8Xh+fn4AQO9q5upcLnffvn11dXX0IwkJCenp6QDQ1NSUmpoKAN9//73JZPrwww8B4Ntvv121atVMvbi5b5yjbKVSmZOT8/jxY7lc7uLismDBguLiYo1GExcXd/To0d7e3sOHD5tMJgDYuHFjaGjo3bt3yYr5+fkSiYTP55eWlk77i0Bzi1qtpnN9AKDX62tqamJjY+kFbt++vW3btoaGhtDQ0KVLl2ZkZMzaWFmIWUbU6/V2z7777rvt7e1kCgbGrlYoFAqFgo4LvZK/v39WVlZubq7BYMDO4jQZZ8pesmTJgQMH1qxZYzAYNm/eHB0d/Yc//AEASGPE1dUVAIRC4eDg4Llz59auXUu3R3x8fKKjo1NSUuLi4qb5JaC5xs/Pj871AUBjY6NAIMjJyamsrCSZbIFAEBgY6OXlJZVKAwMDR887aAzMMiL50cjk4+OzceNGsufpXe3s7CyRSMgJkzG2vGPHjh07dixZsiQiIgI7i9Nkoj8A9+/ff+bMmaVLl9LZVSaLxaLVauVyuU6nI4/IZLL8/Hw+n793794pGyyaH+Lj47/++uugoKCwsDC5XL5r166IiAgA0Ol03d3dZ86c2bJlS3l5+cqVKzMyMjgczvr162d7yGzi6upKlxGVSiVFUWFhYeQpo9GYl5fH4XACAwNra2vpXR0TE/PKTZF3hz6OHhoaksvlAHDkyBF3d/dTp07ZbLbExMSZeV3zxOSyUORk4iufGhkZ4XK5fD6ffsRkMnG5XPy1CL0BOtdHl/xeyWw2czgc/Iy9AVJGJKcvmAfC5DznBP9F1+7dsVgsFEXRkwB2FqcDlvwQQog18AcgQgixBk7ZCCHEGjhlI4QQa+CUjRBCrIFTNkIIsQZO2QghxBo8AFAoFM3NzUajUSgUrl+/3sfH5w02VFZW1tPTc/DgwakeIUIIsZJKpXr58iVJtdjdtdlsvb29ZLJtamqiKCokJGQi2+QCwKpVqw4cOKDT6Q4cOPBm8zUAKJVKnK8RQoiwC1La3aXzh5NNHtpfNnblypWkpCQul3v16tXh4WEOh0NR1JIlS3x8fMrKykZGRrZu3RoYGAgAVqv1zJkzEonEbDbHxsZWVlZGRkaSC4vv3bvX0dGxZs2aH374ITk5GQCuXr0qFov7+vp2795dVlZms9k6Ozs3btw4PDxMB/+++uqrVatWaTQaEqZpa2t73WWyCCH0C2cXpLS7S+cPa2pqJpU8tD+XHRUVVVhYWF5eHhER0dnZ+f777x89evTx48dZWVleXl4ymYz8ZAAAuVx+4MCB5ORkkUgkEonWrFlD5msAMBgMISEhS5cu1Wg05BGNRqNSqbZv304uhD106ND69etNJhMz+EdR1K5duzgcjlqtLi4uXrdu3ZTsOIQQmnl2QUq7u7TJJg/tFwoKCiooKHB1dY2JiXFxceFwOAAgEAi4XG50dDQAbNq0iSw5PDxMun0kBMHcyM6dO6urq69duyYQCEiQ12q1cjgcT09PlUrFzBeQ4F90dLRQKCR/wGL//v1Xr17l8/kODg4T3jkIIfTLQoKU3t7eJApid5c22eThK+Z1Hx8fkUgEAAMDA+fOnROJRIsWLZJIJNeuXfP09IyMjPT29gaAffv2ffPNN+Hh4V1dXbt372Zuoaqqqq+vz8XFJSoq6sSJEzKZTKPRkJ6Ur6/vzZs3MzMza2trd+/ePTr4JxKJOjo6fvWrX73BPkIIoV8IuyDltm3bjh8/Tu4yF4uNjZ1U8vAVWajz58+/++67PB4vLS0tNTXVbDYLBAIAsNlsJpNJKBQyF35l24/OsAGA0Wjk8Xijj/nlcnlcXJybm5td8I+iqO+//x6nbIQQ29kFKZkTI9Okkof2M+mTJ0/Wrl1LJtDw8HAul0t/AS6XazdfA8ArW6wcDodea/QqBQUFBoPBw8ODnNmxyzzevHnzwIEDExk6Qgj9ktEzIZlRmRMj06T+eCnGVxFCiDXw6keEEGINnLIRQog1cMpGCCHWwCkbIYRYA6dshBBijXGm7Pr6+mn98j09PXZXTk4Jo9E4MDAw5ZtFM8Zms3V3d9N3TSbTw4cPR0ZGAEClUlVVVZHHm5qayEWzCM0T40zZpaWlU/Jl7t+//8rHNRrN1E7Zra2t7e3tIyMjOp1uCjeLZhjdOSNOnz4tlUrT0tKYObTJJtAQmgMmFCKBn3b7IiMjLRbLsmXLvvzyyz/+8Y9yuTwhIYH83+AFBQV9fX3h4eEdHR0mk2lkZCQwMFAsFl++fNnd3V2tVtt1+8xmc1BQUGZmJqnHHjt27MqVKzqd7uOPPyZf98svv1y1apWrqyu9YmZmJgDEx8ffuXOHw+GYTKZ33nnn5s2ber1+4cKF9fX1JpNpx44dKpWKx+MVFBQIBAKZTBYaGnrhwoWgoCCr1ZqSkjJNexNNFbpzBgD9/f1+fn4ymUwkEuXl5dE5tKGhoUkl0BCaAyZ6LpvZ7XN3d6+uri4tLfX09NRoNBqNhr56Z+PGjaGhoXfv3tVoNJs3bz58+HB9ff3q1asjIyOXLVs2uts3NDQ0MDDA4XCSk5PfeecduVze2tpKz9cAQBZjrmgwGDZs2EBRVE1NjYuLS2VlZW9vr8FgSE5O3rp1a1RU1Pbt293c3PR6/c2bN1NTU48cOVJfX2+z2QIDAw8dOoRH36zT09Pj6ekJABKJpLu7m86hTTaBhtAcMNHPOrPbZ7VauVxuV1fX+++/n52d7eLiQpYZHBy8dOnSRx99RH5RdXZ2BkZaEF7V7QMAulsiEoksFgv55qSRu8wVt2zZcunSpYULF65evZo8ODg4yLwsnr6ek2QI4Z/f0qPHg1jB39+/oKAAANRqdUhICJ1Dm2wCDaE5YJzPulKpzMnJuXHjBun23bhxo7Oz08fHh9T+RCLR8+fPt27dSha2WCxarVYul48+ku3q6mprayPdvqKiInoyBQAfH5+XL1/euHEjLS2N7vnZYa5YWFgIAAEBAd3d3SUlJZWVlVKptLm5OTc3t7S01NfXt7i4mAxg7dq1p0+fzszMfOM/tYNmnVwuF4vFKpUqNzdXLBYnJCScPXv2ypUrYWFhJIF26tSpnTt3zvYwEZohk2uMvLLbxzQyMsLlcvl8vt3jVqvVZrPx+Xy7bt/Et0yvaDabuVwuqWkPDw8LhULyA4C+PTIy4ujoSB60Wq0Wi+WVKRbECiSBBgDDw8OkCczMoU0qgYbQHIBZKIQQYg08PEEIIdbAKRshhFgDp2yEEGINnLIRQog1cMpGCCHWwCkbIYRYY/wpW6lUarVaABgYGHj8+LHds62trUqlctyNdHR0vNn4YDJZPnKVzc+BCcBfiOfPn9fU1DAfYX6E9Hq90WgELPm9KWYZkXj06FFvby+5Te/qvr6+ioqK0atrtVoyJ8BP34Kurq6qqqqqqiqyhcrKyubmZgAYGhoij0/X65lPxp+y79y5c/PmTQAwGo30m0rTarVqtXrcjfyceXDiWb6WlpY3/iqYAPzlMBgMFEWpVKqioiLyyJMnT06fPk0v8MUXXzQ2NmLJ743RZURy98KFCz4+PtevX1er1fSu7unpKS4u9vT0PH/+PHNdm82WkZFBpnK7t0AsFnt4eABAVVVVU1PTwoULHzx40NDQkJ+f7+bmJpFIZvhlzknjNEb0er2bm5tGoyF3S0tLR0ZGOjo6Pv3006ysLA6H8/Tp04SEhI6ODmYz7+LFi4sXL+7v73d1da2rq/vjH/+oVCo9PT2ZLT1mve/ixYscDoeiqCVLlvj4+JSVlY2MjGzduvX+/fs6ne7AgQNtbW0lJSVOTk49PT1JSUlGo5FehsPhVFdXDwwMkKgbDROA7CUWi5cvX15cXOzt7U0eWb16NT0vZ2dnb9y4EQBqamqw5PcGmGVEs9nM5/ONRqO/v39ycnJJSUliYiLZ1Xfv3t2zZ4+zs7NdgZnL5e7bt6+urg5GvQVubm5ubm6lpaWHDx8ml6RSFNXW1qbT6UZGRpYtWzYbL3euGecoOycnx8PDY3BwkPyms3z58sTExK1bt968eZPD4Rw8eDAhIQEA7Jp5QUFB+/fv1+l0SUlJ0dHRTU1NGo2G2dJTqVTMel9nZ+f7779/9OjRx48fZ2VleXl5yWSynJwcUvWzWCx6vV6tViclJX3yyScFBQXMZQICAiIiIhoaGpi/5QEmAFmuvLy8traWZAmYnj9/7unp6efnB4zCF5b8JoVZRtTr9QDA4XD+8Y9/XLp0iXkgHBMTc/bs2fz8/JaWloaGBoVCoVAoGhoamJsa/RYMDQ05OzvTCYF79+7Fxsa+/fbbXC73z3/+8/S/uLlvnM+6TqfbvHnzkiVLioqKtm3bRmJ+YrF4aGhowYIFAODg4GC1Wu2aeWQxV1dXAPDw8CAfC2C09EZGRpj1PhcXF7IFgUDA5XKjo6MBYNOmTd9//z09ErKug4ODyWQSi8X0Munp6du3b4+IiLD7UwmYAGS1mJiYmJiYEydOhIWFMR/v6OgwGAyPHj3i8/nkvcOS32Qxy4ikZPub3/xmcHBQr9evWbOGXkwmkx07dkyn0w0ODjo7O5NwkF2uZ3RMMS8vLzk5mb69ZcsWBweHBQsWLFiw4NGjRxRFMZNw6A2MNWV3d3f7+/tLpVIAMJvNFoulrKyMy+W2tLR88skn33zzjclkUigU27dvJ808iUQywWaer69vVlbWjRs3GhoaPvroo6+++urcuXMikWjRokUSieTatWuenp6RkZGvW33dunX0Mmaz+dmzZxUVFa+sAJIEIJ/P37t3L50ALC4uJqdZNm/enJ2dnZub6+7uHhwcfO3aNfJLw2RfDppabW1tT548MRgMa9eulcvlu3btog/i4uPjAUChUPB4PB6Pd+rUKZvNlpiYOKvjZRlXV1e6jKhUKimKEgqFBQUF4eHhdEiZyM/Pb2xs/PTTT18XViMxRfIWZGdn79y5k8fjkcn94sWL7e3tFovFZDK9ePECAHg8Hs7XP9+ks1B0UA0AdDodOQKFN2rm0fW+tLS01NRUs9lMVrfZbHRE+3WYy2i1WruPGhMmANnIYDAIhUIul0uX/F4JS35vjHwjk98dTSaTo6Pj6N3I/GZ/HfotGOOdstlsw8PDY6c60QT9Ikp+5eXlMTExsz0KhBD6pftFTNkIIYQmAn+jRAgh1sApGyGEWAOnbIQQYg2cshFCiDVwykYIIdbgAYBCoWhubjYajUKhcP369W98/UhhYeGOHTsmuLDRaCRxjzf7Wggh9AunUqlevny5du1aANDpdPX19QDg5OQUFhZGCktksm1qaqIoKiQkZCLb5ALAqlWrDhw4QAJMP+d6vwmG9O7fvw+T6fMhhBDr6HS6zMxMsVh85coVAODz+R4eHgsXLiwuLgaAwsLCnJwcGFVDHJf91Uqtra09PT1RUVFXr15NTk7+j//4j7CwMLVaLRQKX758+cEHHwAAXbkLDg6+cOHCzp07IyIi6C0wE31Pnz5VKpVcLnfv3r0FBQWdnZ0pKSmXL1/u7+9fv359W1sbNvMQQnPSrVu3UlJS3Nzc7t27BwACgSAwMJD0EQEgISEhPT0dJh+ktJ+yzWazwWAAABJcFQqF+/fvP3HixJEjRywWy+XLl00m00cffQQAp06dCg4O9vX1Zc7XdKKvv79fLpcPDAyQhQFgw4YNJSUljx8/joyMPHDgQEdHB2nm0VsLCQkhzbwzZ85MwQ5DCKHZQ1e3mNfxt7S0bNq0ibnYZIOU9v/8KBAITCYTAFitVvhnk08kEvF4PKFQyAxxkcgLCebR7BJ9ZCMAUFJSolQqY2NjzWYzc3ls5iGE5iQ/P7+enh5gJEIrKiqioqLsFhtdQxyb/bwulUrPnTtnMple9+fBxq7c2SX6CgsLL1y44OLiIhAINBrNixcvFi5c6O7ufuvWrZUrV467NYQQYqn4+Pivv/46KCgoLCyMBClra2t//etf2y3GrCFOZLOvaIxYrdaRkRFyfP1K41bu6EQfAJjNZg6Hw+Px9Hq9WCwmh9Xk/06Z4NYQQoiNKIoymUwCgWAKg5SYhUIIIdbAS2kQQog1cMpGCCHWwCkbIYRYA6dshBBiDZyyEUKINXDKRggh1hhnyibpKeYNhGaAzWbr7u6m75pMpocPH46MjACASqWqqqoijzc1NTU2Ns7OEBGaDeNM2aWlpXY3phap+iFkh+6cEadPn5ZKpWlpacw62mQTaAjNARMKkdD+z//5PyEhIf39/YcOHXrw4MHIyAi5Yuftt98+d+6cs7Ozl5eXTqfr6+vbvXu3l5cXAGRkZOh0up07d5aVlY2MjGzdulUkEuXn54tEosWLF1++fNlms/X09CQnJ5tMpvz8fA6HY7PZNBqNo6OjzWYzGo2pqanT8tLRLxjdOQOA/v5+Pz8/mUwmEony8vLoOtrQ0NCkEmgIzQHjHGWPvjYyJSXlk08+ycnJ0Wq1GzZsSE5O1mq12dnZLi4uCxYsKC4uVqlU27dvJ/M1ALS2tn788cdZWVleXl4ymSwnJyc3N/fo0aPJycmrV6+OjIyMi4sj1UCKooaGhjQaTVxc3NGjR3t7ew8fPkwaVWg+6+npIfUxiUTS3d1N19Emm0BDaA4YZ8qmS3vkhqurKwBwuVw+n8/hcMhdgUBgMBg2b94cHR39hz/8wS7vR26LxeLo6OiYmJhPP/2Uzvv91yC4XPhnOxD+mQ8kG6dTJGje8vf37+joAAC1Wh0SEkLX0SabQENoDhjn8EQmk125coXD4ZA/clNTU5OVlUWOo+/fv//9998HBgYCwMGDB8+cObN06VKpVPrK7axbt+7atWuenp6RkZHR0dEnT54MCAiIiooymUwKhcLPz+/KlSt2XVaEAIAk0FQqVW5urlgsTkhIoOtoHh4ek0qgITQHjJ+FIies+Xw+AKSlpX3wwQd8Pp/L5Z4/fz4pKYmiKJFIRJZkBvxGs9lsJpOJHDVTFEWXtUnVT6fTOTk50Qf1CBF0Am14eJh80ug6GkwygYbQHDD+SUBmFjU8PJy+u2TJEh6PxzyNOMZ8DQBcLpc+y8HhcOjb5Ab54wYI2aE/YPSRAYfDoT+Ejo6OszMshGYJxlcRQog18DdKhBBiDZyyEUKINXDKRggh1sApGyGEWAOnbIQQYo1xpuyKigq72+Q6NKK1tVWpVNJ3CwsLS0pK8IoY9PPZlfz6+/vv379Pf7Q6Ozu7urq6urqqqqqqqqqYn0k0EcwyIgBotdrS0tKhoSEA0Ov19+7d0+v1MOpdYOrv76dvNzY2VldX05vSarUAYLVaHzx40NbWNq0vZB4aZ8q+fv3606dPAcBisXz11VcAMDAwQD+r1WrVajV9t6Wlpb29nS4/TBz2/JAdu5KfUqkMCAg4deoUAFy9erWhocHd3V0sFnt4eAAA3WJFE0SXEcndtra20NDQEydOAMC5c+fCw8PJrrZ7F2harfZ3v/sdua3X6wcHBx0cHDIzM202W0ZGBn1s5+/vn5mZSX4SoKkyzqU0y5YtKysrW7FixT/+8Y+NGzfabDalUhkREZGZmcnhcJ4+fZqQkFBeXt7e3q7X6+mLG8vKyrq6ulQqVWpqKrkU4saNG319ffHx8QUFBST4FxYW9sqeHwBcvXpVKBRiz28+Y5b8AGDDhg0AIBKJamtrKYpSqVQ2m83Nzc3Nza20tPTw4cOzN1L2YZYRzWYzn88PDw8fGhry9vYGAIPBIBKJyAWldu8C7eLFi9u3bye3nZyc1q5dCwDV1dVcLnffvn11dXUAEBAQYLFYnJycSDIITZVxjrKtViuHw7Farb29vSEhIaS0Nzg4yOFwDh48mJCQAAC1tbUpKSlHjx6lu075+fkSiYTP59OVbZIlqaiooIN/r+v5AYBGo8GeH7LT2toqk8kePXq0aNGihISEb7/9FgCGhoacnZ3xgvVJYZYRyQkQrVZ75coVcnTl4+Nz/PjxRYsWMVdpaGhQKBQKhaKhoeH69ev79u2zqyfevn1727Ztdl8oJyfHYDDQp1/QlBg/vhofH3/p0iWpVCqRSMhpEJ1OR35yOjg4AAA5E8LhcOjvHB8fn+jo6JSUlLi4OPIIyfsxg3+je34CgYCcrCRPYc8P0QYGBsrLy+Pj43k8XkREhFgsJh+PvLy8PXv2zPboWIZZRiQlWxcXlw8//JCiqKamJhcXl3/7t3/TaDTMf5RydnaWSCQSicTZ2Vmn01VUVFRWVpaXl5Nna2pqBAIBKcQxJSUlHTp06M6dOzP0wuaHcU6MUBQVFBT09ddff/XVV7W1tWTKlslkWVlZJMK3fft2d3f3rKys7u5uugIhk8ny8/P5fP7evXuZW9u/fz8d/Bvd89u0adOJEydkMplGoxk7V4LmD7lcvnnz5n//93/fu3fv9evX9+7de/LkyaCgID8/v+HhYR6PR4JlaOJcXV3pMqJSqaQo6uXLlxwOR6/Xy2Sy3NxcuVyuUqmYO9bHx4e+TU5D6XS6mJgYuVweFBR05syZLVu2lJeXx8TE0ItVVlb29/c3NTXhaaup9eaNEZ1OR7ecDAaDUChk/n5qMpm4XO4r2/N08G90z89oNNqlptA8R5f8aBRFGY1G+vgAvRlSRqR/RTYYDPRxEvNbe2yj3x2miW8HTRxmoRBCiDXw320QQog1cMpGCCHWwCkbIYRYA6dshBBiDZyyEUKINXDKRggh1hhnyq6vr5+ZcSDEZNeQq/oniqLsnnr27JnRaJyNMbKYXcmPoON8dBmxr6+P2fIkRgcUVSoVXeaqrKxsbm6mF8Z3Z8qNM2XTkZApgcU+NEF2DTkPDw8PD4+7d+9yOBz6KYvFcvLkSYqi8O+sT5ZdyQ8Aampq/vrXvwLAkydPTp8+DQA9PT3FxcWenp7nz59nrmsXUNTpdJmZmWKx+MqVK01NTQsXLnzw4EFDQwO+O9NkotcZWq3WM2fOSCQSs9kcGRlpsViWLVv25Zdf/vGPf5TL5QkJCeSN+fLLL1etWuXq6kqX/H744QelUsnlckmxz93d/dmzZ8nJyaWlpaGhobdu3VqwYEFXV5ePj09vb+/ixYu3bt06na8XsYNdQy4wMHBwcDA0NJT5VG5u7tKlSzs7O1esWDFrA2Wh0SU/nU73ww8/LF26FABWr16tUCgA4O7du3v27HF2drY7brMLKN66dSslJcXNze3evXvBwcEAQFFUW1tbTU0NvjvTYaLnsuVy+YEDB5KTk0Uikbu7e3V1dWlpqaenJ6nu0T9IKYratWsXs+RXVVX17rvvpqSkrFmzJjIyctmyZaTYp9frLRbL0NBQYmJiXFyci4vLsWPHmH8wASGmGzdu7N69m/lIQ0NDaGjo0qVLMzIyZmtUbDS65Hfp0qX33nvPbrGYmJizZ8/m5+e3tLQwS37w04Ai3Zair1y/d+9ebGwsvjvTZKJT9vDwMGmnCQQCq9XK5XK7urref//9GzduuLi40IuRjwKz5De62EfeaWauTyAQCAQCwGIfeg29Xi8UCkk5kubl5SWVSgMDA8m8gybIruQ3ODjo6Ogol8srKytfvHhBLyaTyY4dO7Zu3brQ0FBmyQ9+GlD08/Pr6ekBAJK+yMvL27Jli4ODA74702ScEyNKpTInJ4fP5+/bt++bb74JDw/v6uravXu3j4+PXq8XiUTPnz//wx/+YLcWs+Tn6+t74cIFFxeXffv2dXV1tbW1Wa1WuVz+8OHDlStXTtvrQnOEXC7ftWvX9evXDx48aPfUypUrMzIyOBzO+vXrZ2VsLDW65Hf06FEA0Ol05NQTLT8/v7Gx8dNPPyVHVAQzoCiXy7dt23b8+PGgoKCwsLCLFy+2t7dbLBaTyYTvzjSZXBaKjvCNi1nyM5vNHA6Hx+NZrVabzcbn87VaLfPYHKHXGbsVR3+0ZnJIcwOz5Pe6vxFBlhljI+TdoSjKZDIxp3UC353pgCU/hBBiDbyUBiGEWAOnbIQQYg2cshFCiDVwykYIIdbAKRshhFgDp2yEEGKN/5qyq6qqMjMzi4qKxli6tbV1IteUZ2dn2xWgyIo9PT0Wi6WsrCwrK6u5ufnixYsqlWqyI6b7YUxky5PdFEIITR9m4xB+WkZ8/vx5TU0N/dTEk4c/Ttnnz593cXE5dOjQpk2bxlhaq9Wq1eqxtzgyMmI0Gjdu3Dh6RY1GY7FYlErlwYMH79y5895777m7u09klADQ2tra3t4OAAMDA8zHyc8GsuUJbgohhKYbs3EIPy0jGgwGiqJUKlVRUdFkk4c8ACBdpyVLlsA/2y4kyOfl5dXc3Mzj8RITEzMzMzkcztOnTxMSEsrKyuhQH1m+o6OjoKBAIBDIZDKKompqajZt2uTn5wcAzBXr6+t5PF5lZeXy5csrKysDAgKEQiG9qa+++mrVqlXLli0rKysbGRnZunVrSUmJk5NTT09PUlLSjRs3TCbT4cOHlUqlRCKprq4eGBh4//33L1++3N/fz+FwgoKCHjx40NzcrNPp4uPjf/jhB5PJNDIyEhgYuGHDhul7YxBCaDRm4xB+WkYUi8XLly8vLi729vaebJCSCwDd3d1eXl4A8OTJk7/85S82m40E+SIiIkJDQ6urqwcHBzkczsGDBxMSEgCAGeojW7l582ZqauqRI0fq6+tXrFixfv16Ml/brTg0NCSVStesWRMVFbVmzZpt27YxN0W+aFZWlpeXl0wmy8nJUavVSUlJn3zySUFBQVRU1Pbt20k7MCAgICIioqGhgcPhREZGHjhwQKvVUhT19OnT995776OPPiooKNBoNJs3bz58+DD+lQaE0Myzaxwyy4gAUF5eXltb6+DgMNnkIRcAgoOD6+rqAGD16tVeXl4URZEg39/+9rfg4GCpVKrT6Uhyj6TUmKE+shUOh0Nu2PUE7FYcjbkp8kXFYnF0dHRMTMynn35KsmEODg4mkwn+mQoDgPT0dEdHx4iICLuTIXbDIKuTigJCCM0ku8Yhs4wIADExMZ999tmdO3cmmzzkAQCfz1++fPl3333n6+tLeriE0WgsLS1taGiQyWRZWVkmk0mhUGzfvp0Z6iNLrl279vTp0xKJxMfHh7l1uxVHf/nRm1q3bt21a9c8PT0jIyOZS/r6+l67di0wMBAAzGbzs2fPKioq9u7d6+7ufuvWLbKMh4fHtWvXtFrtunXrnjx5MpHXjxBC0yE+Pv7rr78mjUMSpKTLiG1tbU+ePDEYDGvXruVyuZNKHv4kCzUyMsLMcdlsNqPRSA6TAUCn05HjVvhpqI+wWq0Wi2V0zctuxdFGb8pms5lMptHt7JGREUdHR3IozWwBGo1GemGj0ejo6Pi6MhlCCM0YunFIkofMMqLBYBAKhWSmmlTyEEt+CCHEGng0ihBCrIFTNkIIsQZO2QghxBo4ZSOEEGvglI0QQqyBUzZCCLHG+FO2XeHvlSE9hKaWzWbr7u6m75pMpocPH46MjMBP62hNTU2NjY2zM0SEZsM4U7Zd4e/JkyenT5+ekYGhea2wsDAnJ4e+e/r0aalUmpaWxqyjPXr0qK2trb6+XqFQzOJQEZpJY03Zowt/q1evDggImKGhoXksISGBvqK1v7/fz89PJpOJRKK8vLyUlJRly5ap1eqamprNmzfv2bPn4cOHsztahGbMWFP26MLfTI0Kof/S09NDkmESiaS7u5uuo9EfyAle6YvQHDDWlD268DdTo0Lov/j7+5N/QVGr1SEhIXQdjfQZbDYbJmXQ/DHW4cnrCn8IzRiSQFOpVLm5uWKxOCEhga6jeXh4nDp1ymazJSYmzvYwEZohE8pC2RX+EJoxJIEGAHQFja6jAYDJZOLxeHiUjeYPLPkhhBBr4OEJQgixBk7ZCCHEGjhlI4QQa+CUjRBCrIFTNkIIsQZO2QghxBqTK/n19/ffv3/fbDZP/8DQvGZX8jMajeXl5cPDwwDw/PnzmpoaALBarQ8ePGhra5u1UbIWs4xI6+/vJzeYtc7Ozs6uri7mYq/c7Xq93mg0AkBlZWVzc/PrFkM/3+RKfkqlMiAg4NSpUzMyNjR/2ZX80tPTg4OD09LSDAYDRVEqlaqoqKijo8Pf3z8zM3NoaGgWh8pGdBmRfqSmpuavf/0r/LTWefXq1YaGBnd3d+a6r9ztX3zxRWNjY1NT08KFCx88eNDQ0IDvzjSZXMlvw4YN/v7+5CI0hKYPs+TX19cnlUq9vb39/f0tFsvy5cspivL29g4ICPD29nZychKLxbM7WnZhlhHJb8w6ne6HH35YunQpMGqdtbW15KejXQ9u9G7Pzs7euHEjAAQHBy9atGjdunUdHR347kyTSZf8WltbZTLZDI0OIQAPD4/a2trbt2+XlpaKRKLy8vLa2loHBwcAyMnJMRgMdr/go7Exy4h6vR4ALl269N5779kt9ujRo0WLFiUkJHz77bcNDQ0KhUKhUJDWEHO3P3/+3NPT08/Pj17x3r17sbGxgO/O9JhcyW9gYKC8vDw+Pn6mhocQcDic3//+92+99VZERASfz4+Jifnss8/u3LkDAElJSYcOHSK30QQxy4hubm6Dg4OOjo5yubyysvLFixf0YjweLyIiQiwWi8ViZ2dniUQikUicnZ3hp7u9o6Ojv7+/uLiY3M3Ly9uyZQv5gYrvznSYRMlveHj43//93/fu3Xv9+vX9+/fP2BDRfEZKfgqF4v79+4mJiW1tbU+ePDEYDGvXrq2srOzv729qajp8+PBsD5NNXF1d6TKiUqmkKOro0aMAoNPpQkND6cX27t178uTJoKAgPz8/Hx8f+nHmbifvDo/HUygUPB7v4sWL7e3tFovFZDJpNBp8d6YDlvzQLxop+RkMBvqUqMFgEAqFpN6n0+nIcR+aLFJGJGc7X5dCpCjKaDSO/rcrerfTncVXwndnOmDJDyGEWAMvpUEIIdbAKRshhFgDp2yEEGINnLIRQog1cMpGCCHWwCkbIYRYY3Ilv87Ozvv379s1BxCacnYlP2Dk5ZhPvXjxor6+fqYHx36jS36dnZ30DfI9rtPpqqqqqqqqyCXQTHa7nX5HmPW+rq4usjqzC4h+vsmV/Hp6eqRSKZb80HSzK/kx83L0UyUlJVqttq+v7969e7MzStayK/l1dXX9+c9/tlqtwPge5/P5Hh4eCxcuLC4uZq47erfT7wiz3icWiz08PACgqqpqRl/bXDe5kt+aNWsoipJKpTM0OjRfMUt+wMjLMZ9qamqKjIyMjY0lgWY0QaNLfr6+vlFRUeRZ+ntcIBAEBga2trbu2bOHufro3U6/I8x6n5ubW2BgYF1d3b59+2b05c11YzVGmCW/4uLif/3Xf21ubr59+/aiRYtmangIvZa/v39WVpaDg4PBYJjtsbCJXclPIpEwn21qamJ+j7e0tGzatKmhoYE0/5ycnMbe7XS9j8fjDQ0NOTs7v+5qePRmJlfyCw4OPnbsGAkwIjS7duzYsWPHjiVLlkRERMz2WNjEruRn9yzze7yiooIcfTNLfmPvdma9Ly8vz+4IHf18kyj5mc3mzMxMoVDo6+s7Y+ND8xzdihv91NDQkFwuB4AjR47M+LhYbHTJLywsjDxlNpuzs7Pp7/Ha2tpf//rXAMAs+TF3u927w4z8DQ8P83g8Pp8/0y9vrptcyc9isVitVqz6oRkzRivOYrFQFIWTwpt5Xclv3O9x5m4f/e5gvW+6YckPIYRYA/9lACGEWAOnbIQQYg2cshFCiDVwykYIIdbAKRshhFgDp2yEEGKNH6dsusv14sULYFTTXqewsHCMZ3t6eiwWy1QMDyGE2EqlUjGrWI2NjdXV1eR2X19fRUUFuT2pIOWPU3ZpaSm5UVZWBgADAwPMhe7fv2+3WktLyxgb1Wg0r5yyR28HIYTmJJ1Ol5mZKRaLr1y5AgB6vX5wcNDBwSEzM7Onp6e4uNjT0/P8+fOTDVL+eOWSzWYj6UXyX6VS6eXllZ2dvXz5chcXl8uXL7u7u9fW1tpstt7e3mPHjpG1MjMz6Ueqq6ubm5uNRqOLiwufzw8KCnr8+LFSqeRyucnJyRwOp729/fLlyzabrbOz8913321vb29rayspKQkJCenv7z906FBjY2NXV5dKpUpNTX3dBW8IIcQKt27dSklJcXNzI3Oxk5PT2rVrAaC6uvru3bt79uxxdnYuLS1tampKTU0FgO+//z4uLm7czf44MzY1Nd26dQv+eWJEo9GQyTc2NpbD4URGRnp7e9fV1SUnJ/f395PCgEql4nA49CODg4Opqak2m+3EiRNubm4URVVVVX300Uf0V5LJZJGRkXFxcZcvX1ar1cXFxUeOHCkpKUlJSbHZbN99911HR8emTZu0Wm1paemWLVumfA8ihNCMoatbzAPQ27dvb9u2zcHB4ezZsyEhIS0tLdHR0ZMKUv64rcWLF+/duxcA+vv7ySNBQUECgeD48eO//e1vAWBkZIQkcUUiETnpYffI6D9VQw7YR9u/f//Vq1f5fL6Dg4OrqysAcLlcPp/v4+MTHR0dHR3NDCUjhBAb+fn59fT0eHt701GQmpoaUiEHgGPHjul0usHBwR07dmi12o6ODlLEHddr/4+RlpaWJ0+euLu7A0BXV5fFYnn58uWNGzfS0tLI5O7r68t8RCqVXrx4MSMjw9HRkWzB19f3woUL5JCcMJlMCoVCJBKRA2ryGrKystLS0rZu3SqTyfLz84uKijgczhvuJIQQ+mWIj48/e/bslStXwsLC5HL506dPz5w5MzAwUF5eDgD5+flnz559++23h4aGrl+/Xl1dHRMTM5HNjpWFMhqN5IDXarXabDY+n6/X652cnJjL2D3S29v75MmThIQEctdsNnM4HObvBUajUSAQfP/997/61a8AIC0t7YMPPuDz+aQlZjKZuFwunshGCM0BFEWZTCaBQDA6eUhKijD5IOWUlfweP3788uVLBweHAwcOjL3kjRs3Nm7cSM7ylJeXT/BnC0IIIYyvIoQQa+DVjwghxBo4ZSOEEGvglI0QQqyBUzZCCLEGTtkIIcQa40/ZSqVSq9UyHxk74/cGxg0HovnGZrN1d3fTd00m08OHD0dGRuCndbSmpqbGxsbZGSJCs2H8KfvOnTs3b95kPjJ2xu8N2IUDESosLMzJyaHvnj59WiqVpqWlMetojx49amtrq6+vVygUszhUhGbSONcZ6vV6Nzc3jUYDAFarNT09XSKRlJaWfvjhh1lZWRwOx2QyvfPOO3/+85+XLFnS2dn53//7f3/48GFzc7NOp4uPjxeJRPn5+SKRaN26ddXV1Z2dnUePHr1+/bpOpzt27Ni5c+fEYvHSpUuVSqWnp+eFCxeCgoKsVmtKSgqzEZiRkbFgwYKuri4fH5/e3t7FixdHR0fn5+eTrbm4uMzIjkIzKiEhIT09ndzu7+/38/OTyWQikSgvL4+uow0NDX344YcA8O23365atWpWx4vQDBnnKDsnJ8fDw2NwcLCjo+PGjRv79+8/dOjQ6tWrVSpVTU2Ni4tLZWWl2WwWCARvv/32ihUrXr58+fTp0/fee++jjz4qKCjIzc09evRocnJyQEDAhg0bPD09y8vLW1tbP/7447y8vPj4+KSkpBUrVmg0GpvNFhgYeOjQIZ1ORzcC33nnHblcPjQ0lJiYGBcX5+LicuzYMaVSKRKJ6K3NzG5Cs6inp4cUcyQSSXd3N11Ho0tkWDhA88c4n3WdTrd58+YlS5YUFRVxuVxnZ2cAIJ3A1atXk/Aen88njzs5OWm1WjrqxOPxTCYTuV1SUuLg4BAbG1tdXU2+/YaGhshaNHLXZrPZNQLFYjEACAQCgUAAAEKhkLm1Kd0b6JfI39+/oKAAANRqdUhICF1HI10am81GbiA0H4w1ZXd3d/v7+0ulUgAwm81JSUnffPNNSEhIdXX1b3/727y8vJKSEicnp82bNzPX8vDwuHbtmlarXbduncViOXnyZEBAgF6vB4AXL14sXLiQLJaYmPjNN9+sWLEiKCjI7uv6+vpmZWXduHGjoaHho48+unDhgt0CJpNJo9Ewt4bmKrlcvmvXLpVKlZubKxaLExISvv7666CgoLCwMA8Pj1OnTtlstsTExNkeJkIzZHKNEYqiDAYDne4bHh4WCoWjW6lGo9HR0ZEc+1AURY6a9Xq9WCy2W9hgMJCD6NFGVwPtnh29NTT30Ak0unxG19EAwGQy8Xg8PMpG8wdmoRBCiDXw8AQhhFgDp2yEEGINnLIRQog1cMpGCCHWwCkbIYRYA6dshBBijTlb8uvp6bFYLOR2SUmJ2Wx+4039nOGVlZVlZWW98erzFjPXBwCdnZ33798nV6h3dXWVl5eT/zlVq9XafTjRRDDLiER1dTWpsxmNxvLy8uHhYfJ4Z2dnV1eX3ep2u72urq6qqoosZvdUf3//9L2K+WnOlvw0Go3FYrl//z4AtLe30z2KN/BzhqdUKg8ePPjKp1pbW9vb2994y3MYM9dHHunp6ZFKpadOnerr67t7965MJvv73/9us9kyMjIqKipmd7RsRJcRyd0rV664urpmZGSMjIykp6cHBweTp65evdrQ0ODu7s5cd/Ruv3PnjkQiEQqFdk9ptdrf/e53M/Wa5os5UvLLzs5OTExsaGhQKBRkdT6f7+Pjc/ny5f7+foqi5HK5Xq8PDg6OjY0lLy09Pd1us6RfERUVdfXq1aSkJObwIiIiXvcaHz16lJycDABXr16NjY3Nzs5evnx5XFwcALS1tVVWVkZGRjY2NpJ9tX//fnrkN27cMJlMcXFxFouFfNHk5OQvv/xy1apVrq6uXV1dKpUqNTU1MzMTAOLj4xcsWDCtH4Vfjlu3btG5PvLImjVrXr58KZVKyfW3IpGIw+Fwudx9+/bV1dXN7mhZh1lGNJvNfD5/aGho8eLFu3fvzsvLk0ql3t7e/v7+jx49oihKpVLZHe7Y7XaLxaLRaBYsWEA+n8ynLl68uH379hl+dXPeHCn5hYeHV1RUVFdXm81mEpYaGhoSCASRkZEHDhzgcDjbtm371a9+pVQq6Zc2erNms9lgMACARqOxGx4AvO41kmfJWkaj0cXFhf6p4O/vv2bNGplMRu8rHo9HjzwqKmr79u2urq70FwUAiqJ27dqVn58vkUj4fH5paanBYNiwYcP8ma8BQK1W07k+8khTU1NhYaFQKHR1dR0cHDx79uyaNWtmdYwsxiwjkvgPmZQXLlzI4XBqa2tv375dWlr69OnTRYsWJSQkfPvtt+RgSKFQNDQ02G2Nw+EcOXKkqKjo7t27zMevX7++b98+jCxOuTlS8luyZMn58+d5PF5gYODFixc3b958584d5sbJRphX54/erEAgIAO2Wq2vG97o18jn88mhitVqDQoKEggEx48f/+1vf0uvyNxXZWVlzJFTFMX8ogBAdo6Pjw9ZXigUbtmy5dKlS+Hh4StXrhz7zZoz/Pz86FwfeSQ4ODg4OPjEiRMqleq//bf/5ubmdvr0aWxkvxlmGZH8aCSRltbW1oCAgLfffntoaKizs9PBwSEiIsLR0VEsFjs7O/P5fAAg3yxMDg4O/v7+/v7+f//73zdt2kQ/rtPpKioqKisrg4ODY2JiZu7lzXVzp+TX39+/f//+RYsWXbly5ciRI+RBd3f3W7duTXBfSKXSc+fOmUwmpVL5v/7X/3rd8Oxeo4uLy4kTJ2QymUajaWlpef78ud25P5lMRu8r5sh9fX2vXbv261//uqqqinxR5ir5+fl8Pn/v3r3kH3tHf6vMYfHx8XSuTy6Xb9++XS6XC4VCX1/fZcuWXbt2zdXVFf+0xRtzdXWly4hKpZKiKF9f36tXr3Z1df3Lv/xLVVXV/fv3ExMTFyxYcPLkyaCgID8/Px8fn1duSi6XL1u2rK6urre3124eOHz4MADodDqcr6fW3C/5GY1Gcsw+EVardWRkhB7SGMNjvkaj0cjj8cjvgK/7cvS+Yo58ZGTE0dGR/GJh94VMJhOXy+XxeGazmcvlOjg4TPAlzA10ro+U/CwWi9VqJT+3bDab0Wh83fuCJoiUEckpES6XS4cSmZ95iqKMRiN5/JXIu6PX60UiEfYUZwaW/BBCiDXwByNCCLEGTtkIIcQaOGUjhBBr4JSNEEKsgVM2QgixBk7ZCCHEGj9O2Tdv3rx27do//vEPcg3e2AYGBh4/fjz2MtnZ2STJNCUm29KbjjQgQghNil2Qsq+vj25mNTY20pdAV1VVVVVV6XS6iWzzxym7s7MzKSlpzZo1/+///b8xZm0SnzMajb29vWNsdGRkxGg0bty4kdz9+XP3ZFt605EGRAihibMLUvb09BQXF3t6ep4/f16v1w8ODjo4OGRmZra3tzc3N0skkgn2WH6ykIeHxzvvvHPnzh2RSESX5P7v//2/ISEh/f39hw4dIvG5LVu2PHz4cHBwEADeffddsm5HR0dBQYFAIJDJZBRF1dTUbNq0yc/Pz2g0kpyeyWRKSUkBgKtXr27cuPHixYuLFy/u7+93dXWtq6v74x//WFFRQefxnj171tfXt3v3bi8vLwCwS/2FhYXx+fywsLDMzMzdu3fTbTwSiY2Pj1cqlcuXLz9z5oxEIjGbzYcPH2Z2+CZyzSRCCP0cdkHKu3fv7tmzx9nZubS01MnJae3atQBQXV3d2Njo6uoqlUoneJG2/blsV1dXjUbDLMkBQEpKyieffJKTk0PicwsXLly5cuW7775LyiHEzZs3U1NTjxw5Ul9fv2LFivXr1/v5+QGAUCgkOb2hoSGyJOn2BQUF7d+/X6fTJSUlRUdHNzU1MfN4KpVq+/btZL6mV6FTfytXrnzw4AG5cJlZ9aOjdxqNRi6XHzhwIDk5WSQS9ff3Mzt8P/etQAih8dgFKWNiYs6ePZufn0//vYHbt29v27YtKioqNDT0+PHjEzw3YH8ofu/evXXr1vX09NAluefPnwMAl8slKS9ygfvoMB4zbvfKryQQCOjiHb0FV1dXAPDw8NDr9cwtcDgc0rRjolN/AODo6Hj79u0dO3Ywq36/+c1vSPQOAIaHh+lWn8ViYXb4JrJfEELo57ALUspksmPHjul0OnJ+oqamRiAQBAYGAoCTk1NiYmJdXR19MnkMP06vDQ0N5I8AeHt7y2QyZkmupqYmKyuLHPY6Ojpeu3YtISFh9IbWrl17+vRpiUQyOvpFcnqbNm2ii3evHAozj/fkyZOxx719+/a//e1v8fHxCoWCbuMxo3f79u375ptvwsPDu7q6du/ePe6OQAihKWQXpCQd/MbGxk8//bS2tvbMmTNbtmwpLy93cHBQq9UNDQ3Hjh2byGZ/zEJZLBaKoshxNEGX5NLS0j744AM+n09KXSQ+98rTwVar1WKxvDITSvp2zOLdKzHzeBNHt/FGR+/GzgEihND0sQtS0rlEO1qtduIx4fFLfuXl5Vi8RQihXwKMryKEEGvg1Y8IIcQaOGUjhBBr4JSNEEKsgVM2QgixBk7ZCCHEGmOFSBQKRXNzM/lfqtevX69SqSwWS0RExIwNDs1bNputt7eXvizLZDI9fvx49erVAoFApVK9fPmSJBqampooigoJCZnVwSI0c8Y6yl61atWBAwd0Ot2BAwdcXV0pilKpVEVFRTM2ODRvFRYW5uTk0HdPnz4tlUrT0tKYdbRHjx61tbXV19crFIpZHCpCM2miJ0bEYvHy5cspivL29p7WASEEAAkJCXTYrL+/38/PTyaTiUSivLy8lJSUZcuWqdXqmpqazZs379mz5+HDh7M7WoRmzCTOZZeXl9fW1jIvB0doBvT09JBGmEQi6e7uputoJBAGry+RITT3TGLKjomJ+eyzz+7cuTNtg0HoFfz9/cmfGVKr1SEhIT09PQBAURRp0dhstslGaRBir4kenrS1tT158sRgMJB/9kFoZpAEmkqlys3NFYvFCQkJdB3Nw8Pj1KlTNpstMTFxtoeJ0AyZRGPEYDAIhUI8okEziSTQAICuoNF1NAAwmUw8Hg8/k2j+wCwUQgixBh6eIIQQa+CUjRBCrIFTNkIIsQZO2QghxBo4ZSOEEGvglI0QQqwxiZKfj4+PXq93cHCg4w8ITRNmrg8AjEYjKfmJRCJm5O/Fixc2m23p0qWzOlj2YZYRAUCr1SoUioiICFdXVwDo6OiQSqVkyc7OTg6H4+vry1y9srLSw8MjKCiIfoQsRm4AgI+Pj4+Pz6NHj6RSqb+//0y9rHlhoiU/8h3yxRdfNDY2ztTY0DzFzPWRR9LT04ODg9PS0oAR+SspKdFqtX19fffu3ZvN4bIQXUYkd9va2kJDQ0+cOAEAT548OX36NHn86tWrDQ0N7u7uzHWbmpoWLlz44MGDhoYGu8XEYrGHhwcAVFVVdXR0+Pv7Z2ZmDg0NzdwLmwcmcWIkOzt748aNANDa2pqdnU2/3whNrVu3btG5PgDo6+uTSqXe3t7+/v5DQ0N05K+pqSkyMjI2Nra5uXmWR8wqzDKi2WwGgPDwcJFIRCKdq1evDggIAIDa2lrSW6bzW0RwcPCiRYvWrVtHwi/Mxdzc3AIDA+vq6vbt2xcQEODt7e3k5CQWi2fjVc5ZE52ynz9/7unp6efnBwABAQERERENDQ0jIyPTOTY0T6nVajrXBwAeHh61tbW3b98uLS0l16wT/v7+WVlZubm5BoNh1sbKQswyol6vBwCtVnvlyhW7IOKjR48WLVqUkJDw7bffNjQ0KBQKhUJBH1nfu3cvNjbWbjEAGBoacnZ2JgmBnJwcg8GAs8TUmmgWqqOjw2AwPHr0iM/nV1ZWbt++PSIiwmKxkHNhCE0hPz+/np4eb29vUlPgcDi///3vh4aGOjs7+Xw+vdiOHTu0Wm1HRweZgNAE+fv7FxQUAONHo4uLy4cffnju3Dm9Xu/k5EQW4/F4ERERjo6OYrHY2dmZ7Hny/Z6Xl7dlyxbSYWYuRp5KTk4mW0hKSmpvb79z587evXtn44XOTROdsuPj4wFAoVDweLzy8vJnz55VVFTgO4GmQ3x8PJ3rIyU/hUJx//59u2Lf0NCQXC4HgCNHjszSSFnJ1dWVLiMqlUqKol6+fMnhcJjzNQDs3bv35MmTQUFBfn5+9F90A4CLFy+2t7dbLBaTyVRfX79z5056seHhYR6PRyb3ysrK/v7+pqamw4cPz8KLnLveMAul1WpdXFymfDQIEXSuj5T8DAbD6FOiFouFoijmcTeaOFJGJOepORyOwWBgztcERVFGo5F5MsoOeXdet5hOp3N2dp7ykc9zWPJDCCHWwEtpEEKINXDKRggh1sApGyGEWAOnbIQQYg2cshFCiDVwykYIIdZ4k5Lfw4cPN2zYgP8/LJo+diW/qqoqciMyMpJc9OHg4CAQCKqrqwFg6dKl+P//TopdyQ8AOjs7SY6Cuaubmpo0Gk1kZCRzXavVapfoa2xspBejI3+jF0NT4k1Kfu3t7XalGISm0OiSn4eHh4eHx927d0nhk/4cNjc3SyQSuzgGGpddya+rq+vPf/6z1WoFxq42GAyDg4MODg6ZmZnMde0SfXq9nl6MGfnDkt80mcRnnS75AUBubq6DgwNFUUlJSdMzMDR/kZKfm5sbXVUNDAwcHBwMDQ0FxuewsbHR1dVVKpViwH1S7Ep+fD7f19c3KiqKPEvvaicnJ/JbDvlVhhYQEGCxWOhEH3Ox4OBgAKAoqq2tbfPmzczF0FR5k5IfAMTFxR06dGhoaMhkMk3b2NA8ZVfyI27cuLF7927m5zAqKio0NPT48eMDAwOzNlYWGl3ys0N2Nbl9+/btbdu22ZX8Rif6yGLkNh35w5LfdJjolN3R0dHf319cXHznzh0AID85BQIBXu+Ophwp+QEA/enS6/VCodDBwYH5OXRycgoKCkpMTKyrq5vV8bKMv78/SV3TPxqZ6F0NADU1NQKBIDAw0NnZWSKRSCQS8m8GSUlJhw4dIlMBczH4aeTPbjE0Jd6k5KdQKC5fvkzObmN8FU250SW/69evHzx4EH76OayoqFCr1Q0NDceOHZvtIbPJ6JJfWFgY/Sy9q2tra8+cObNly5by8vKYmBh6AWaiTy6XBwUF0Yu1tLTQkT+NRoMlv+nw5lkoUgKb2tEgRNiV/F63GBYl3xiz5Ef+IsHE0Ym+sd8dLPlNByz5IYQQa+ClNAghxBo4ZSOEEGvglI0QQqyBUzZCCLEGTtkIIcQaOGUjhBBr8OBVxb6fudGOjg6pVDoVw0MIIbayC1I+f/7cYrFERETAT/OHL168sNlsS5cuncg2ufCqYt/PhM0HhNA8ZxekNBgMFEWpVKqioiJm/rCkpESr1fb19dERtLHZX7nU2tra09MTFRV19erV5OTk//iP/wgLC1Or1UKh8OXLlx988AEAFBQUCAQCmUwWHBx84cKFnTt3kp8bly9fBoD4+HilUhkQEFBSUqLT6SiKcnJy4nA4JpPpnXfemeK9ghBCv0h2QUqxWLx8+fLi4mJvb29m/lCj0aSmpgLA999/HxcXN+5m7c9lm81mg8EAABqNBgCEQuH+/fsNBsOhQ4f+9V//9fbt2zdv3kxNTT1y5Eh9fT0A+Pr6kvkaAAwGw4YNGxYsWKDRaCQSyYEDB/R6fUJCQk1NjYuLS2VlpdlsnspdghBCv1Sjg5Tl5eW1tbWkmQX/zB/6+/tnZWXl5uaSiXdc9kfZAoGA9FRJ75wU+0QiEY/H4/F4FEWRxjwZB4fDIRVH4je/+c2lS5fCw8PJ3czMzH379plMptWrV0dHR0dHR+MfskEIzRMkSOnt7U1HQWJiYmJiYk6cOBEWFkbnDwMDA7VabUdHB3MuHYP9lC2VSs+dO2cymZRK5StXWLt27enTpyUSyeiz3oWFhfDPtt8PP/zw4MEDBweHwMDA7u7ukpISJyenzZs3T+o1I4QQS9kFKZcvX/706VODwbB27VpmJXH58uVyuRwAjhw5MpHNviILZbVaR0ZGxvhbElar1WKxjM6ums1mLpdLH/YzDQ8PC4VC+ggdIYTmPLsgpcFgEAqFdt1Ei8VCUdTEz0BgyQ8hhFgDL6VBCCHWwCkbIYRYA6dshBBiDZyyEUKINXDKRggh1sApGyGEWGOiU3ZxcbFKpSK3+/v7p208CAEA2Gy27u5u+q7JZHr48OHIyAgAqFSqqqoq8nhTU1NjY+PsDBGh2TDOlG0ymc6fP//5559zOBx3d3cAqKmp+etf/zojY0PzV2FhYU5ODn339OnTUqk0LS2NWUd79OhRW1tbfX29QqGYxaEiNJPsL1i3k5qampiY+Kc//Ync1el0P/zwA7Pr2tvbm5+fLxKJNm3alJ6ebpf9w2o2ejMJCQnp6enkdn9/v5+fn0wmE4lEeXl5dB1taGjoww8/BIBvv/121apVszpehGbIOEfZ586dc3Jy+vzzz2/fvg0Aly5deu+995gL5ObmHj16NDk52cvLa3T2bxoHjuaNnp4eUsyRSCTd3d10Hc1ms5EF6FIaQnPeOFM2h8PZt2/fn/70Jz6f//LlS0dHR7lcXllZ+eLFC7IACf4RzOyfUCjES+HRlPD39+/o6AAAtVodEhLS09MDABRFkVaDzWazizYgNIeNc3jyn//5n2q1mtz+7LPPjh49CgA6nS40NJQ8GB0dffLkyYCAgKioqGkdKJqf5HL5rl27VCpVbm6uWCxOSEig62geHh6nTp2y2WyJiYmzPUyEZsgUZKEoihoZGREKhVMyIISYSAINAIaHh0UiETDqaABgMpl4PB4eZaP5A0t+CCHEGnh4ghBCrIFTNkIIsQZO2QghxBo4ZSOEEGvglI0QQqyBUzZCCLHGpKdsvV5vNBqnYygI0Zi5PgDo6OioqqpSKpUA0NfXV1FRQT+FXck3wCwjAoDRaCwrK6MvmiPXmhKv/H7XarVarZb5SGdnZ1dXF0VRVVVVVVVVOp3ulYuhn2+cKXtoaMjukS+++AJzl2haMXN95JHCwkKJROLs7NzT01NcXOzp6Xn+/HkA0Gq1v/vd72Z1sKxElxHJ3bq6uqCgoO+++46iqCdPnpw+fZpecvT3u81my8jIYP7UvHr1akNDg7u7e3t7e3Nzs0QiIQUYu8XQlBjngvXS0lKdTpeYmEgubszOzt64cSNzgZs3b+r1+oULF+r1epvNptFoHB0dbTab0WhMTU2dxoGjuevWrVt0ro88Mjg4yOPx/Pz8rly5smfPHmdn59LSUgC4ePHi9u3bZ3Ww7MMsI5rNZj6fv3r1agDw9fW1Wq2rV6+mY7ajv98BgMvl7tu3r66ujtytra2lKEqlUtlstsbGRldXV6lUSqYL5mJoqoxzlL1nz56333775s2bt2/ffv78uaenp5+fH/2sWq02GAzJyclbt27VaDRxcXFHjx7t7e09fPiwyWSa5pGjOUutVtO5PvLIu+++297enp6eHhMTc/bs2fz8/JaWluvXr+/btw8zfpPFLCPq9XryoNlspiiKuTOZ3+8NDQ0KhUKhUDQ0NNht7dGjR4sWLUpISPj222+joqJCQ0OPHz8+MDAwU69m3hn/XHZzc7PJZAoMDOzo6Ojv7y8uLr5z5w55ymAwMNMipOTn6uoKAJgcQW/Mz8+PzvWRR3x8fDZu3EhRlEwmO3bs2Lp160JDQ3U6XUVFRWVlZXl5+ayOl2WYZUTyo9Fms507d+7dd99lLsb8fnd2dpZIJOTclN3WeDxeRESEWCwWi8VOTk5BQUGJiYl4cD19xjlCuXjx4uLFi8l7uXjxYgBQKBT0j2KpVJqdnZ2bm0v+YA1CUyI+Pp7O9cnl8i1btuTn53M4nMDAQADIz89vbGz89NNPSRlKp9PFxMTM9pDZxNXVlS4jKpVKiqLOnj27fPnymzdvbtq0acGCBWSx+Ph4+Of3u4+Pzys3JZfLd+7cefLkyaCgID8/v4qKCrVa3dDQcOzYsZl7PfPMFGShhoeHhUIhh8OZkgEhBIxcHyn5kfNsjo6OwEj6oZ+D7EbyZyLeOIVI3h2KooxGI3lTtFqti4vLVA4U/RSW/BBCiDXwUhqEEGINnLIRQog1cMpGCCHW4AHAiuXhsz0MhBBCY3n67DmQo2xyCyGE0C/cLPwfI/QfYEUIITQp/x9zAmObqQXoLAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Showing the raw image\n",
    "from IPython.display import Image as displayImage\n",
    "filename = img['filename']\n",
    "displayImage(\"examples/\"+filename)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<html>\n",
      " <head>\n",
      "  <meta charset=\"utf-8\"/>\n",
      "  <style>\n",
      "   table, th, td {\n",
      "                     border: 1px solid black;\n",
      "                     font-size: 10px;\n",
      "                   }\n",
      "  </style>\n",
      " </head>\n",
      " <body>\n",
      "  <table frame=\"hsides\" rules=\"groups\" width=\"100%\">\n",
      "   <thead>\n",
      "    <tr>\n",
      "     <td>\n",
      "      <b>\n",
      "       Variable\n",
      "      </b>\n",
      "     </td>\n",
      "     <td>\n",
      "      <b>\n",
      "       Hazard ratio\n",
      "      </b>\n",
      "     </td>\n",
      "     <td>\n",
      "      <b>\n",
      "       95 % CI\n",
      "      </b>\n",
      "     </td>\n",
      "     <td>\n",
      "      <b>\n",
      "       <i>\n",
      "        p\n",
      "       </i>\n",
      "       value*\n",
      "      </b>\n",
      "     </td>\n",
      "    </tr>\n",
      "   </thead>\n",
      "   <tbody>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Age (median)\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.716\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      ≤69\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      &gt;69\n",
      "     </td>\n",
      "     <td>\n",
      "      0.839\n",
      "     </td>\n",
      "     <td>\n",
      "      0.310–2.268\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Gender\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.142\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Male\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Female\n",
      "     </td>\n",
      "     <td>\n",
      "      0.426\n",
      "     </td>\n",
      "     <td>\n",
      "      0.152–1.190\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Type of surgery\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.010\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Low anterior resection\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Abdominoperineal resection\n",
      "     </td>\n",
      "     <td>\n",
      "      3.140\n",
      "     </td>\n",
      "     <td>\n",
      "      0.919–10.725\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Tumor location\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.710\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Upper rectum\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Middle rectum\n",
      "     </td>\n",
      "     <td>\n",
      "      1.267\n",
      "     </td>\n",
      "     <td>\n",
      "      0.381–4.213\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Low rectum\n",
      "     </td>\n",
      "     <td>\n",
      "      1.716\n",
      "     </td>\n",
      "     <td>\n",
      "      0.419–7.026\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Grade of differentiation\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.936\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      G1\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      G2\n",
      "     </td>\n",
      "     <td>\n",
      "      1.933\n",
      "     </td>\n",
      "     <td>\n",
      "      0.416–3.423\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      G3\n",
      "     </td>\n",
      "     <td>\n",
      "      1.119\n",
      "     </td>\n",
      "     <td>\n",
      "      0.137–9.137\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Histologic type\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.299\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Adenocarcinoma\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Adenocarcinoma with mucinous features\n",
      "     </td>\n",
      "     <td>\n",
      "      0.381\n",
      "     </td>\n",
      "     <td>\n",
      "      0.096–1.514\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Depth of tumor invasion\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.925\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      T3\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      T4a\n",
      "     </td>\n",
      "     <td>\n",
      "      0.919\n",
      "     </td>\n",
      "     <td>\n",
      "      0.316–2.673\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      T4b\n",
      "     </td>\n",
      "     <td>\n",
      "      0.745\n",
      "     </td>\n",
      "     <td>\n",
      "      0.172–3.223\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      Tumor size\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "      0.329\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      ≤4 cm\n",
      "     </td>\n",
      "     <td>\n",
      "      1.000\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "    <tr>\n",
      "     <td>\n",
      "      &gt;4 cm\n",
      "     </td>\n",
      "     <td>\n",
      "      0.594\n",
      "     </td>\n",
      "     <td>\n",
      "      0.214–1.651\n",
      "     </td>\n",
      "     <td>\n",
      "     </td>\n",
      "    </tr>\n",
      "   </tbody>\n",
      "  </table>\n",
      " </body>\n",
      "</html>\n"
     ]
    }
   ],
   "source": [
    "# Extracting the HTML for the table from the annotation\n",
    "html_string = format_html(img)\n",
    "print(html_string)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html>\n",
       " <head>\n",
       "  <meta charset=\"utf-8\"/>\n",
       "  <style>\n",
       "   table, th, td {\n",
       "                     border: 1px solid black;\n",
       "                     font-size: 10px;\n",
       "                   }\n",
       "  </style>\n",
       " </head>\n",
       " <body>\n",
       "  <table frame=\"hsides\" rules=\"groups\" width=\"100%\">\n",
       "   <thead>\n",
       "    <tr>\n",
       "     <td>\n",
       "      <b>\n",
       "       Variable\n",
       "      </b>\n",
       "     </td>\n",
       "     <td>\n",
       "      <b>\n",
       "       Hazard ratio\n",
       "      </b>\n",
       "     </td>\n",
       "     <td>\n",
       "      <b>\n",
       "       95 % CI\n",
       "      </b>\n",
       "     </td>\n",
       "     <td>\n",
       "      <b>\n",
       "       <i>\n",
       "        p\n",
       "       </i>\n",
       "       value*\n",
       "      </b>\n",
       "     </td>\n",
       "    </tr>\n",
       "   </thead>\n",
       "   <tbody>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Age (median)\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.716\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      ≤69\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      &gt;69\n",
       "     </td>\n",
       "     <td>\n",
       "      0.839\n",
       "     </td>\n",
       "     <td>\n",
       "      0.310–2.268\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Gender\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.142\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Male\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Female\n",
       "     </td>\n",
       "     <td>\n",
       "      0.426\n",
       "     </td>\n",
       "     <td>\n",
       "      0.152–1.190\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Type of surgery\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.010\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Low anterior resection\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Abdominoperineal resection\n",
       "     </td>\n",
       "     <td>\n",
       "      3.140\n",
       "     </td>\n",
       "     <td>\n",
       "      0.919–10.725\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Tumor location\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.710\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Upper rectum\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Middle rectum\n",
       "     </td>\n",
       "     <td>\n",
       "      1.267\n",
       "     </td>\n",
       "     <td>\n",
       "      0.381–4.213\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Low rectum\n",
       "     </td>\n",
       "     <td>\n",
       "      1.716\n",
       "     </td>\n",
       "     <td>\n",
       "      0.419–7.026\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Grade of differentiation\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.936\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      G1\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      G2\n",
       "     </td>\n",
       "     <td>\n",
       "      1.933\n",
       "     </td>\n",
       "     <td>\n",
       "      0.416–3.423\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      G3\n",
       "     </td>\n",
       "     <td>\n",
       "      1.119\n",
       "     </td>\n",
       "     <td>\n",
       "      0.137–9.137\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Histologic type\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.299\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Adenocarcinoma\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Adenocarcinoma with mucinous features\n",
       "     </td>\n",
       "     <td>\n",
       "      0.381\n",
       "     </td>\n",
       "     <td>\n",
       "      0.096–1.514\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Depth of tumor invasion\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.925\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      T3\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      T4a\n",
       "     </td>\n",
       "     <td>\n",
       "      0.919\n",
       "     </td>\n",
       "     <td>\n",
       "      0.316–2.673\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      T4b\n",
       "     </td>\n",
       "     <td>\n",
       "      0.745\n",
       "     </td>\n",
       "     <td>\n",
       "      0.172–3.223\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      Tumor size\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "      0.329\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      ≤4 cm\n",
       "     </td>\n",
       "     <td>\n",
       "      1.000\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "     <td>\n",
       "      &gt;4 cm\n",
       "     </td>\n",
       "     <td>\n",
       "      0.594\n",
       "     </td>\n",
       "     <td>\n",
       "      0.214–1.651\n",
       "     </td>\n",
       "     <td>\n",
       "     </td>\n",
       "    </tr>\n",
       "   </tbody>\n",
       "  </table>\n",
       " </body>\n",
       "</html>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Rendering the above HTML in Jupyter Notebook for a more readable format\n",
    "from IPython.core.display import display, HTML\n",
    "display(HTML(html_string))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
